home *** CD-ROM | disk | FTP | other *** search
/ PsL Monthly 1993 December / PSL Monthly Shareware CD-ROM (December 1993).iso / prgmming / dos / c / tcclib.exe / ALLFIELD.C < prev    next >
Encoding:
C/C++ Source or Header  |  1989-07-18  |  1.3 KB  |  61 lines

  1. typedef struct {
  2.     int   x;
  3.     int   y;
  4.     int   Len;
  5.     int   Type;
  6.     char *Address;
  7.     int   EditFlag;
  8.     int   NumDecimals;
  9. } FieldStruc;
  10.  
  11. int  FindDown( FieldStruc *Field, int pos, int NUMFIELDS );
  12. int  FindLeft( FieldStruc *Field, int pos, int NUMFIELDS );
  13. int  FindRight( FieldStruc *Field, int pos, int NUMFIELDS );
  14. int  FindUp( FieldStruc *Field, int pos, int NUMFIELDS );
  15. int  GetField( FieldStruc *f );
  16. void PutField( FieldStruc *f );
  17.  
  18. #include <GCOMM.H>
  19.  
  20. void GetAllFields( FieldStruc *Field, int NUMFIELDS, int (*ChHnd)( int ch ), void (*Update)( void ) )
  21. {
  22.     register int pos = 0;
  23.     register int key;
  24.  
  25.     for (pos=0; pos<NUMFIELDS; ++pos) {
  26.         PutField( Field + pos );
  27.     }
  28.  
  29.     pos = 0;
  30.  
  31.     for (;;) {
  32.         key = GetField( Field + pos );
  33.         Update();
  34.         switch( key ) {
  35.             case DOWN:
  36.                 pos = FindDown ( Field, pos, NUMFIELDS );
  37.                 break;
  38.             case UP:
  39.                 pos = FindUp   ( Field, pos, NUMFIELDS );
  40.                 break;
  41.             case RIGHT:
  42.                 pos = FindRight( Field, pos, NUMFIELDS );
  43.                 break;
  44.             case LEFT:
  45.                 pos = FindLeft ( Field, pos, NUMFIELDS );
  46.                 break;
  47.             case HOME:
  48.                 pos = 0;
  49.                 break;
  50.             case END:
  51.                 pos = NUMFIELDS-1;
  52.                 break;
  53.             default:
  54.                 if( ChHnd( key ) < 0 ) return;
  55.                 break;
  56.         }
  57.         if (pos < 0) pos = 0;
  58.         if (pos > NUMFIELDS-1) pos = NUMFIELDS-1;
  59.     }
  60. }
  61.